package com.wutong.erb.entity.module;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 图书基础信息实体类
 * @author wutong
 */
@Data
@TableName("book")
public class Book {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 国际标准书号
     */
    private String isbn;

    /**
     * 书名
     */
    private String title;

    /**
     * 副标题
     */
    private String subtitle;

    /**
     * 封面图URL
     */
    private String coverUrl;

    /**
     * 图书简介
     */
    private String description;

    /**
     * 出版社ID
     */
    private Integer publisherId;

    /**
     * 出版日期
     */
    private LocalDate publishDate;

    /**
     * 页数
     */
    private Integer pageCount;

    /**
     * 字数
     */
    private Integer wordCount;

    /**
     * 语言
     */
    private String language;

    /**
     * 定价
     */
    private BigDecimal price;

    /**
     * 平均评分
     */
    private Double rating;

    /**
     * 主分类ID
     */
    private Integer categoryId;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 最后更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    // ======================
    // 非数据库字段（关联字段）
    // ======================

    /**
     * 出版社名称（非数据库字段）
     */
    @TableField(exist = false)
    private String publisherName;

    /**
     * 分类名称（非数据库字段）
     */
    @TableField(exist = false)
    private String categoryName;

    /**
     * 作者列表（非数据库字段）
     */
    @TableField(exist = false)
    private List<String> authors;

    /**
     * 是否在用户书架中（非数据库字段）
     */
    @TableField(exist = false)
    private Boolean inBookshelf;

    /**
     * 用户评分（非数据库字段）
     */
    @TableField(exist = false)
    private Integer userRating;
}
